import plugin from '../../lib/plugins/plugin.js'
import { segment } from 'icqq'
import cfg from '../../lib/config/config.js'
import common from '../../lib/common/common.js'
import moment from "moment";
import fetch from 'node-fetch'

// 支持信息详见文件最下方
//在这里设置事件概率,请保证概率加起来小于1，少于1的部分会触发反击
let reply_text = 0.05 //文字回复概率
let reply_img = 0.5 //图片回复概率
let reply_voice = 0.01 //语音回复概率
let mutepick = 0 //禁言概率
let example = 0.3 //拍一拍表情概率
//剩下的0.08概率就是反击
let master = "主人"
let mutetime = 0 //禁言时间设置，单位分钟，如果设置0则为自动递增，如需关闭禁言请修改触发概率为0

//回复文字列表
let word_list = [
    '什么意思喵',
    '变态喵',
    '差不多得了喵',
    '你戳谁呢喵！你戳谁呢喵！',
    '开饭了吗喵',
    '没到饭点别戳喵',
    '大胆喵，影响睡觉了喵',
    '帕朵不在这里喵',
    '一会坐扁你喵',
    '人之常情喵',
    '今晚睡觉睁两只眼喵',
    '喵的喵，今晚去你家进货喵',
    '睡觉喵，一边去喵',
    '喵喵喵喵喵？喵喵喵喵！',
    '猫猫说话带喵不是正常的喵',
    '饿了喵，速速上供喵',
    '你在梦游吗喵，速速起床喵，这个点怎么睡得着的喵',
    '说你呢喵',
    '差不多得了喵',
    '网络80喵，可耻喵',
    '你体力满了喵',
    '速速陪猫山王睡觉喵',
    '你不睡觉吗喵',
    '大胆喵，不知道本喵的吨位还敢造次喵',
    '给本喵干哪来了喵，这还是乐土吗喵',
    '*****喵，****喵',
    '什么喵，还能这么干喵',
    '真是的喵',
    '好喵，走了喵',
    '好东西速速上供喵',
    '我不是罐头喵，我其实是帕朵喵，信我呀喵',
    '今天什么日子喵？o，睡觉天喵，晚安喵',
    '唉喵',
    '猫为什么会说话喵，因为带了播放器喵，想改内容自己想办法喵',];

let ciku_ = [
    "_num_喵",
    "已经_num_了，差不多得了喵",
    "_num_喵，有毅力的喵",
    "_num_喵，没意思喵",
    "_num_喵，记这个干嘛喵",
    "_num_吗喵，不是哥们喵",
];

export class chuo extends plugin {
    constructor() {
        super({
            name: '戳一戳',
            dsc: '戳一戳机器人触发效果',
            event: 'notice.group.poke',
            priority: 100,
            rule: [
                {
                    /** 命令正则匹配 */
                    fnc: 'chuoyichuo'
                }
            ]
        }
        )
    }


    async chuoyichuo(e) {
        if (cfg.masterQQ.includes(e.target_id)) {
            logger.info('[戳主人生效]')
            if (cfg.masterQQ.includes(e.operator_id) || e.self_id == e.operator_id) {
                return;
            }
            fetch("http://localhost:8089/ossPokeAPI/angry").then(Response => Response.json()).then(data => {
                if (data) {
                    if (data.status == 200) {
                        try {
                            e.reply([
                                segment.at(e.operator_id),
                                `\n大胆喵，再戳喵，头你给打歪喵`,
                                segment.image(data.link),
                            ], true)
                            common.sleep(1000);
                            e.group.pokeMember(e.operator_id);
                            return true
                        }
                        catch (err) {
                            e.reply('图片获取失败，请检查网络链接或联系开发者。');
                        }
                    }
                    else {
                        e.reply(`获取图链失败，错误码：${data.link}`);
                    }
                }
                else {
                    e.reply('图片api异常。');
                }
            })
        }
        if (e.target_id == e.self_id) {
            logger.info('[戳一戳生效]')
            let count = await redis.get(`Yz:pokecount:`);
            let group = Bot.pickGroup(e.group_id);
            let usercount = mutetime - 1
            if (mutetime == 0) {
                usercount = await redis.get('Yz:pokecount' + e.operator_id + ':')
            }

            // 当前时间
            let time = moment(Date.now())
                .add(1, "days")
                .format("YYYY-MM-DD 00:00:00");
            // 到明日零点的剩余秒数
            let exTime = Math.round(
                (new Date(time).getTime() - new Date().getTime()) / 1000
            );
            if (!count) {
                await redis.set(`Yz:pokecount:`, 1 * 1, { EX: exTime });//${e.group_id}
            } else {
                await redis.set(`Yz:pokecount:`, ++count, {
                    EX: exTime,
                });
            }
            if (mutetime == 0) {
                if (!usercount) {
                    await redis.set('Yz:pokecount' + e.operator_id + ':', 1 * 1, { EX: exTime });
                } else {
                    await redis.set('Yz:pokecount' + e.operator_id + ':', ++usercount, { EX: exTime, });
                }
            }
            if (Math.ceil(Math.random() * 100) <= 20 && count >= 10) {
                let conf = cfg.getGroup(e.group_id);
                e.reply([
                    `${ciku_[Math.round(Math.random() * (ciku_.length - 1))]}`
                        .replace("_name_", conf.botAlias[0])
                        .replace("_num_", count),
                ]);
                return true;
            }
            //生成0-100的随机数
            let random_type = Math.random()
           // let random_type = 0.80

            //回复随机文字
            if (random_type < reply_text) {
                logger.info('[回复随机文字生效]')
                let text_number = Math.ceil(Math.random() * word_list['length'])
                e.reply(word_list[text_number - 1])
            }

            //回复随机图片
            else if (random_type < (reply_text + reply_img)) {
                logger.info('[回复随机图片生效]')
			  fetch("http://localhost:8089/ossPokeAPI/poke").then(Response => Response.json()).then(data => {
                        if (data) {
                            if (data.status == 200) {
                                try {
                                    e.reply([segment.image(data.link)])
                                }
                                catch (err) {
                                    e.reply('图片获取失败，请检查网络链接或联系开发者。');
                                }
                            }
                            else {
                                e.reply(`获取图链失败，错误码：${data.link}`);
                            }
                        }
                        else {
                            e.reply('图片api异常。');
                        }
                    })
            }

            //回复随机语音
            else if (random_type < (reply_text + reply_img + reply_voice)) {
                logger.info('[回复随机语音生效]')
                e.reply('喵');
                fetch("http://localhost:8089/ossPokeAPI/voice").then(Response => Response.json()).then(data => {
                    if (data) {
                        if (data.status == 200) {
                            try {
                                e.reply([segment.record(data.link)])
                            }
                            catch (err) {
                                e.reply('语音获取失败，请检查网络链接或联系开发者。');
                            }
                        }
                        else {
                            e.reply(`获取语音失败，错误码：${data.link}`);
                        }
                    }
                    else {
                        e.reply('语音api异常。');
                    }
                })

            }
            //禁言
            else if (random_type < (reply_text + reply_img + reply_voice + mutepick)) {
            	if(cfg.masterQQ.includes(e.operator_id) || !group.is_admin){
            		fetch("http://localhost:8089/ossPokeAPI/arrogance").then(Response => Response.json()).then(data => {
                        if (data) {
                            if (data.status == 200) {
                                try {
                                    e.reply([segment.image(data.link)])
                                }
                                catch (err) {
                                    e.reply('图片获取失败，请检查网络链接或联系开发者。');
                                }
                            }
                            else {
                                e.reply(`获取图链失败，错误码：${data.link}`);
                            }
                        }
                        else {
                            e.reply('图片api异常。');
                        }
                    })
            	}
                logger.info('[禁言生效]')
                logger.info(e.operator_id + `将要被禁言${usercount + 1}分钟`)
                if (usercount >= 36) {
                    e.reply('一脚踢进小黑屋喵')
                    await common.sleep(1000)
                    await e.group.muteMember(e.operator_id, 21600)
                    return
                }
                //n种禁言方式，随机选一种
                let mutetype = Math.ceil(Math.random() * 4)
                if (mutetype == 1) {
                    e.reply('大胆喵，谁让你戳的喵')
                    await common.sleep(1000)
                    await e.group.muteMember(e.operator_id, 60 * (usercount + 1))
                }
                if (mutetype == 2) {
                    e.reply('你好喵')
                    await common.sleep(1000);
                    e.reply('可爱的喵')
                    await common.sleep(1000);
                    e.reply('为什么不回信息喵')
                    await common.sleep(1000);
                    e.reply('拉黑喵')
                    return
                }
                if (mutetype == 3) {
                    e.reply('猫山王镇压喵')
                    await common.sleep(1000)
                    await e.group.pokeMember(e.operator_id)
                    await e.group.muteMember(e.operator_id, 60 * (usercount + 1))
                    await common.sleep(1000);
                    return
                }
                if (mutetype == 4) {
                    e.reply('布吉岛喵')
                    await common.sleep(1000)
                    await e.group.pokeMember(e.operator_id)
                    await e.group.muteMember(e.operator_id, 60 * (usercount + 1))
                    return
                }
            }

            //拍一拍表情包
            else if (random_type < (reply_text + reply_img + reply_voice + mutepick + example)) {
            logger.info('[回复拍一拍表情包生效]')
                
                fetch(`http://localhost:8089/ossPokeAPI/pokeUrl?number=${e.operator_id}`)
                     .then(response => response.json())
                     .then(data => {
                  if (data) {
                       if (data.status == 200) {
                           try {
                                e.reply([segment.image(data.link)]);
                           } catch (err) {
                                e.reply('图片获取失败，请检查网络链接或联系开发者。');
                           }
                       } else {
                           e.reply(`获取图链失败，错误码：${data.link}`);
                  }
                  } else {
                        e.reply('图片api异常。');
                  }
                });
            }

            //反击
            else {
                let mutetype = Math.round(Math.random() * 3)
                if (mutetype == 1) {
                    e.reply('反击喵！')
                    await common.sleep(1000)
                    await e.group.pokeMember(e.operator_id)
                }
                else if (mutetype == 2) {
                    e.reply('戳喵！')
                    await common.sleep(1000)
                    await e.group.pokeMember(e.operator_id)
                }
                else if (mutetype == 3) {
                    e.reply('win喵！')
                    await common.sleep(1000)
                    await e.group.pokeMember(e.operator_id)
                }
            }

        }

    }

}
